package com.rd.student.ruanjian.class4.zhangrui.day8_2.review;

public class Reviewyield extends Thread {

    public Reviewyield(String name){
        super(name);
    }

    public void run(){
        for (int i = 0; i < 50; i++) {
            System.out.println(getName()+" "+i);
            if (i==20) Thread.yield();
        }
    }

    public static void main(String[] args) {
        //yield 是让步的意思  让当前的线程暂停一下  但是不会阻塞这个线程  而是会让线程进入就绪状态。
        // yield 是让系统重新分配资源，但也可能出现暂停之后重新获取资源继续执行
        //因为只有优先级与当前线程相同，或者优先级更高的线程才会获得资源。此时是通过优先级来判定的。
        //但是对于线程的优先级而言，高和低只是相对的概念，高优先级的线程也可能会让步给低优先级的线程，
        // 而高优先级的线程会获得的CPU时间片相对多一些，
        // 执行到的机会相对大一些，并不是一定先执行，以及先执行完成。

        Reviewyield ty1=new Reviewyield("Thread-0");

        // 线程的优先级 是一个1-10范围的int值
        // 可以通过Thread类提供的常量来调用
        // MAX_PRIORITY  MIN_PRIORITY  NORM_PRIORITY
        // 分别是最大值10   最小值1    中间值5
        // 也可以通过直接传入int值来进行设置
        ty1.setPriority(Thread.MAX_PRIORITY);
        ty1.start();
        ty1.setPriority(7);

       Reviewyield ty2 = new Reviewyield("Thread-1");
       ty2.setPriority(Thread.MAX_PRIORITY);
       ty2.setPriority(Thread.NORM_PRIORITY);
        ty2.start();
     }
}
